Creative Coding
全てのコードはクリエイティブと言えるが、ひとまず「プログラムを組んで芸術的な表現をすること」とする
そこでまた「芸術的とは何なのか」という疑問が起きる
芸術の歴史と接続可能なもの
現状そこまでシリアスでもなく、プログラムで絵や音や映像を作る、くらいの使われ方
Creativeという言葉に引っかかる人が多い
単なる言葉でそれだけのこと
他のプログラムがクリエイティブでないとかそういう訳じゃない
「表現のための仕組み(道具)を作ること」と定義するのはどうだろうか
コンピュータに泥臭さを持ち込む
リベラルアーツのためのプログラミング
Creative Codingと呼ばれる前にもそのようなジャンルは存在した
Software Art, Artist-designed Software
グラフィックに限らず、電子工作やデバイスも含む
コンピュータで作るものの中に、美術的な要素が入ったもの
実用性とは異なる目的のもの
使う言語も表現に特化しているか、非エンジニア向けに簡略化されている印象がある
ゲームとの違い
インタラクティブである点は共通する
視覚効果も技術的な面で共通する部分は多い
NO FIGHT, NO TIME LIMIT, NO HIGH SCORE, NO MONSTERS, NO WINNER, NO LOSER, JUST PLAY – LIA
文芸的プログラミングとの違い
文芸的プログラミングはスタイル
本を書くようにプログラムを書く
趣味のプログラミングとの違い
単にコードを書くのが好きというのであれば、エンジニアは仕事でコードを書き、息抜きでコードを書いている
いつからか(2010年代前半?)Designer NewsなどでCreative Coderの募集が出るようになった
Googleの検索結果を見ていると2012年くらいに募集が出ている感じ
既に自分でCreative Coderと名乗っている人はいた
Creative Technologistという人もいる
内容的にはプログラミングでインタラクティブなWebコンテンツとかアプリ、インスタレーションを作る
Processing, openFrameworks, Three.jsなどが使える人材
無目的にコードで何か表現を行う、というのとは違う
もともとの意味からは変わって、商業的な狭い範囲を意味するものになってしまった感がある
こういうのが単体で仕事になる時代になったんだなぁと思った記憶がある
学生時代にこういうのをやってた人は広告業界でWebやインスタレーションを作るか、教員になっていた
あとは単発で美術館などで作品の開発
意外とGoogleに居たり(辞めてたり)する
Google Zoo
2019年にInstagramで求人があった
GLSLとJavaScript、Spark AR Studio
OpenGL/GLSL shaderとJavaScriptを1年以上書いていることが最低条件、メディアアートの学士、openFrameworks, Processing, Cinder, Max/MSP, Unity3d, After Effectsなどの経験があると良い
デザイン会社
Hudson Powell
Pentagram
Universal Everything
The Barbarian Group
世代交代というか、ある程度ジャンルとして認知されてからと、その前で目立つ人の指向性や作品の質が変わった気がしている
Creative Codingを見てCreative Codingをやりたくなった世代?
自分もそうといえばそうなのだが、ジャンルの外の要素をいかに取り込むかという意識があるかないか?
歴史との接続をしようとしているか否か
接続の仕方、語り方の問題
権威を借りようとしたり、価値を釣り上げようとしたりしているように見える
歴史や思想が継承されておらず、作るものや参照点に偏りがある
Generative Art, Algorithmic Artと呼ぶ方が近い
オンスクリーンに閉じている
それはそれで別にいいのだが、自分の興味とは少しずれている
Processingは元々Macromedia mindというように、Flash的なものをコードでという意識があった
そういう意味では美術やデザインの延長で、コードを使うという方向は納得できる
自分の場合はコンピュータやプログラミングの根源的な部分に遡って、音やグラフィックを考えたい
幾何学図形を使うから美術で、三角関数を使うから数学で、美術と数学の組み合わせであるというのではなく、どちらがどちらであるかがわからなくなる領域
あるいは、コンピュータである以上はどこまで行っても数学であることを認め、そこから新たに視覚的な効果を立ち上げる
同じようなことを繰り返しており、深まっていかない
手法の共有、ライブラリ化
コンピュータサイエンスに近づき過ぎると、見えなくなるものが出てくる
コンピュータで動作する以上は、全く無視することもできない
Poetic Computing
アルゴリズムは効率化が目的だが、それ以外に面白さや美しさという指標を導入してみる
あるいは原理を理解しやすくするためにあえて最適化しない、など
絵作りの質感に対する実践は進んでいる
コードによる試行錯誤
パラメータの調整
よりフィジカルにコードと向き合う
目で結果を確かめて調整、の繰り返し
他のジャンルからの刺激
コードによる表現それ自体ではなく、何かしらの演出など副次的な存在になってしまっている
他に楽に実現可能な代替手段があればコードを書かなくてもよい
かといって単に隙間を探し続けるのも不毛
Processing以前のBASICなどでグラフィックプログラミングを教える書籍に数学的な概念を応用した例がある
逆にプロトタイプやすぐに絵を出すために作られたはずのProcessing以降にAPIから外に出るようなものが少ない印象
HowではなくWhyについて考えたい
我々の世界に対する眼差しをいかに変えたか
道具やメディアによって人間が外部化するもの
そしてそれを足がかりにして思考や技術を深めること
今まで自分たちが創造性だと思っていたものがどう変わるか
ある手続きに従って自動的に絵なり音響を作るにはプログラミングが適している
人間の力では有限の時間内に終わらないような膨大な手続きを可能にする
人間の身体能力を超えた出力
高速、巨大、極小、正確
元々は自動化が目的だった
大量生産、複製
人間にとって正確に描くことは難しいが、コンピュータにとってはラフに描くことが難しい
コンピュータは幾何学が苦手
コンピュータにとって円や四角は何なのか
数値の羅列
関数の定義
APIを使うことと、自ら定義することの違い
美術における素材やメディウムと向き合うこと
コンピュータアーキテクチャへの理解
開発環境の違いによるメンタルモデルの違い
OpenGL(API)とGLSL(シェーディング言語)
画家視点とキャンバス視点
PixelとVector
印象派、キュビズム、新表現主義などのような括りになる時は来るのか
ディスプレイ派
線をどのように引くか
line(0, 0, 100, 100);
vertex(0, 0); vertex(100, 100);
point(0, 0); point(1, 1); ... point(99, 99); point(100, 100);
数学的には
陰関数(The Implicit Form)
$ ax+by+c=0
陽関数(The Explicit Form)
$ y=mx+c
パラメータ形式(The Parametric Form)
$ x = x0 + ft
$ y = y0 + gt
数学において、陽関数より陰関数の方が表現力が高いとされる
陽関数で表せない陰関数がある
y軸に平行な直線を表現できない
シンタックスの解釈と人間の目の解釈の違い
可塑性
途中で色を変えたい、点線にしたい、曲げたい
個人的なモチベーションとしては、色や形をもっと自由に扱いたい
ProcessingなどのAPIでは円や四角が既に定義されており、それの描画を組み合わせる
あくまで描画だけであり、重なった点を抽出したり領域を塗りたかったりしても、別途形状を定義して計算しなくてはならない
実体があるオブジェのように扱うにはさまざまなプログラムを書く必要がある
Generative Art
解析的に作られているか数値的に作られているかで何らかの分類は可能か
この言葉選びが正確かどうかがわからないが、言いたいことを具体例で挙げると
幅100px、高さ100pxの描画領域に、x=0, y=0に1px四方の正方形を描く
毎フレームx座標に+1、y座標に+1動かす
というものがあったとして、初期値を与えて指定フレーム分進め、結果を観察することもできるが、これはx=yという式の変数に値を入れてプロットしたものと同じである
逐次実行して結果を表示するものと、すでに結果を知った上でコードにすることの違い
データビジュアライゼーションでもexplanatory(説明的)なものとexplorately(探求的)なものがある
explanatoryは分かりやすく伝えるために視覚化する
exploratelyは何か洞察を得るために視覚化する
オブジェクト指向と関数型
決定論
解析的解法が数学的に綺麗とはどういうことか
生成という言葉を簡単に使いがち
何を持って生成とするか
数学における生成
R・トム『構造安定性と形態形成』
群における生成元
線形代数の生成系
美術における生成
生命っぽいものを感じるかどうか?
向井周太郎『生とデザイン』
これは六角形の各辺の中点を繋いで形を作っていて生成っぽい アルゴリズムの可視化、美術的な技法のシミュレーションの先にある計算された自然さ
未知なる生き物の柄、形態
自己組織化
最適化
画像編集ソフトの機能や効果を使うこととグラフィックライブラリのAPIを使うことの違い
アルゴリズムの選択、考案
データ構造
2分木など
C言語であれば構造体に2つの変数を持たせて繋いでいく構造で、メンタルモデルとして木をイメージする
デジタル・マテリアリズム
直接対象に触れず、コードを介して行う
WYSIWYGでない
美術との接点があるもの
点・線・面の定義とその構成
例えば画面や紙に線を引くとすると、次にどこにどんな線を引くかは前の状態に引きずられる
繰り返し処理で一括処理するとそこが考慮されない
コンピュータや機械はそのようにプログラムしない限りは以前の状態に引きずられない
コンピュータ上でどうモデリングするか
そこに作家性が表れるのではないか
ソクラテス「形の美」
「何かとのかかわりで美しい」ものと対比「それ自体で美しい」
幾何学図形
プラトン「学びに伴う快」
最も重視されるべきは「正しさ」という規準であって「快」という規準ではない
アリストテレス「すべての人間的事柄」は「疲労する」ゆえに「持続的ではありえない」
快も持続的でないが、固有の快は活動を促進する
活動は減退せざるをえないとはいえ、活動に伴う快はかえって活動の持続を促す
好きこそものの上手なれ
遠近法など世界の見方を反映したもの
キュビズム、印象派、表現主義などの主義や形式による分類
美術においては写実表現の時代が長い
幾何学形態を描くのは事件だった
中西夏之
似たような画面上の現象が一定の規則の中で新たに新たに繰り返されている。一定でありながら何かが新たに、新たになっている。滝のかたちは一定のかたちを保ちながら水はいつも新しい水が流れているように。
ファインアートなど、コンピュータを使用しない美術制作においては、目と手と作品が直結している
油絵であればキャンバスに絵の具を塗ること
彫刻であれば石や木を彫ること
素直に対応させれば、エディタに書いたプログラムが作品ということになる
しかしそのように考える人は稀だと思う
通常のプログラミングにおいては、コードの品質が重視される
ディスプレイに表示されたグラフィック、出力されたものが作品
そう考えると写真や映像に近い
ある形式を守らなければ存在しえない
指示書、あるいはテキストが作品
コンセプチュアルアート
Sol LeWitt
造形とアプローチが同義であるデザイン
Wim Crouwel
Golan Levinは紙からコードで作っている
現実の紙を模する必要はないと思うが、要素を自ら定義し構築するのは重要だと思う
古堅真彦は「展覧会を開くとして、その一部をプログラムによって作る」という課題を出す
Generative Artの定義
長い時間をかけて形づくられていくもの
バスの車掌「時間」が溶けこんだ「工藝的なる声」
語源は?
ジョン前田『Creative Code』2004年
これに対するリスペクト?
Ira Greenberg『Processing: Creative Coding and Computational Art』 2007年
批評
あまり見かけないのは何故か
できる人が少ない
どう評価するかの基準が不明
単に目立つ人の名前が挙がるだけで批評性がない
何を古典とするか
Computer Graphics and Art などのテキストを読む
アウトプットの美的な判断はできる
コードの善し悪しや実装の難易度は評価に含まれるのか
美術における技法や技巧はどれくらい評価の対象になっているか
あるいはコード自体に詩的な要素が入っていたり、機知に富んでいたりすることが評価に値するのか
コードが読める人にしか評価できない
詩が批評できるか
動画における撮影や編集技術に近い感覚かも知れない
良いアルゴリズム
人間が読みやすい・理解しやすい
未知の結果を、手順に従えば、誰でも得ることができる
たくさんのメモリを消費しない
結果を得るまでの時間が短い
どんな入力に対しても必ず停止する
GRAPHIC DESIGN MANUALのThe dotをコード化
美的にも技術的にもこちらの方が高いと言える
人間の目や感覚を基準とした場合
アルゴリズムの選び方、その実装、パラメータの調整はそのまま絵を描く際の技術力と言えるのではないか
技術が高いから良い訳でもない
アルゴリズムのネタ的消費
そもそも美術の文脈で批評に耐えうる強度を持っていない
そんなことはないはず
民藝運動のような既存の美術に対するオルタナティブになる可能性 参考
Johm Maeda, Creative Code
Margit Rosen, A Little-Known Story about a Movement, a Magazine, and the Computer's Arrival in Art
Herbert W. Franke, Computer Graphics-Computer Art
Critical Code Studies
Coding Literacy
The Software Arts
Nick Montfort, Exploratory Programming For the Arts and Humanities
今の興味に合致している
大泉和文, コンピュータ・アートの創生:CTGの軌跡と思想 1966–1969
Golan Levin and Tega Brain, Code as Creative Medium
Carl Lostritto, Computational Drawing
Lillian F. Schwartz, The Computer Artist's Handbook
Lillian Schwartzの仕事を調べたい
自分でシェーダーを書く必要性を直観した理由
Billy Klüverも調べたい
E.A.T.について存在は知っていたが、具体的にどうすごいのかを知らなかった
Art and technologyに特化したスイスの画廊
四半期ごとにコレクター向けの教育的な資料を公開
Linear Optimization (Linear Programming)
線型計画法を視覚芸術に応用
Georg Nees, Generative Computergraphik
自然計算
計算美学
計算幾何学
数理工学
プログラム意味論